/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.dom.lrparser.gcc;

public class GCCParserprs implements lpg.lpgjavaruntime.ParseTable, GCCParsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3,1,
            1,4,4,3,3,2,2,4,1,0,
            1,1,2,2,2,2,2,2,2,2,
            2,4,1,4,1,3,3,3,1,3,
            3,1,3,3,1,3,3,3,3,1,
            3,3,1,3,1,3,1,3,1,3,
            1,3,1,5,1,3,3,3,3,3,
            3,3,3,3,3,3,1,1,2,1,
            0,1,3,1,1,1,1,1,1,1,
            1,3,4,3,2,4,1,2,1,1,
            1,2,5,7,5,1,0,7,2,5,
            9,8,3,2,2,2,3,2,4,2,
            2,2,2,2,1,1,1,1,2,1,
            2,2,2,1,2,2,1,2,2,1,
            2,2,1,2,2,1,3,1,3,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            6,8,0,0,1,1,3,3,3,0,
            1,0,1,2,4,2,1,1,1,3,
            1,1,2,3,7,8,0,1,0,1,
            3,1,3,1,1,1,1,1,1,3,
            1,1,1,1,1,3,1,2,2,1,
            5,3,1,3,5,1,3,1,3,2,
            4,3,5,4,6,6,3,5,1,3,
            4,5,6,0,1,2,1,3,1,1,
            3,2,1,1,1,1,2,1,2,3,
            1,1,1,3,1,2,2,2,3,4,
            5,1,1,7,3,0,0,1,1,3,
            3,4,1,1,2,3,2,3,2,1,
            0,1,2,1,1,1,1,1,2,1,
            3,6,4,2,4,1,1,1,1,2,
            6,3,1,3,1,4,0,1,1,1,
            3,1,0,4,3,1,2,1,3,4,
            4,4,6,1,0,1,3,1,3,0,
            1,4,5,2,4,2,4,3,3,5,
            3,4,3,1,2,2,2,4,2,1,
            1,2,2,3,2,2,3,1,1,1,
            1,1,1,1,2,5,3,1,-105,0,
            -114,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-2,0,0,0,
            0,0,0,-351,-312,0,0,-41,-224,0,
            0,0,-111,-260,0,-7,0,0,0,0,
            0,0,-222,0,-84,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -32,0,0,0,0,-3,-35,-107,0,-58,
            0,0,0,-146,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-5,0,0,-120,0,0,
            0,0,0,0,0,0,0,0,-10,-11,
            -253,0,0,0,0,0,0,0,0,0,
            0,0,-221,0,0,0,0,0,0,0,
            0,-62,0,0,0,0,0,0,0,0,
            0,0,0,0,-116,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-190,0,
            0,0,0,0,0,0,0,-4,0,0,
            0,-360,0,0,0,0,0,0,0,-42,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-12,0,0,0,0,0,0,0,
            0,0,-109,-112,0,-209,0,0,0,0,
            0,0,0,0,0,-80,0,0,0,0,
            0,0,0,0,0,0,-314,0,0,0,
            -33,0,-13,0,0,0,0,0,0,0,
            0,0,0,0,0,-172,0,-295,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -24,0,0,0,0,-25,0,0,0,0,
            0,0,-37,-123,0,0,0,0,0,0,
            0,0,-36,-108,0,-345,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -38,-274,0,0,0,0,0,0,0,0,
            0,-257,0,-81,0,0,0,0,0,0,
            0,0,0,-45,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-121,-63,
            0,0,0,0,0,0,0,0,0,0,
            0,-210,0,-9,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-245,
            0,0,-40,-30,-347,0,0,0,0,0,
            0,0,0,0,-47,0,0,0,0,0,
            0,0,-43,0,0,0,0,0,0,-44,
            -205,0,0,0,0,0,0,0,0,0,
            0,-54,-361,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -56,0,0,0,0,0,0,-239,-64,0,
            0,0,0,0,0,0,0,0,0,0,
            -79,0,0,0,0,0,0,0,0,0,
            -49,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-310,-65,0,0,0,
            0,0,0,0,0,0,-241,0,0,0,
            0,0,0,0,0,0,-31,-71,0,0,
            0,0,0,0,-73,0,0,0,0,0,
            0,0,-50,0,0,-119,0,0,0,0,
            0,0,0,0,0,-106,-29,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -74,-151,0,0,0,0,0,0,0,0,
            0,-51,0,0,0,0,0,0,0,-85,
            0,0,0,0,0,0,-182,0,-86,0,
            0,0,0,0,0,0,-90,0,0,-141,
            0,0,0,0,-72,0,0,0,0,0,
            0,-92,-189,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -113,0,0,0,0,0,0,-258,-28,0,
            0,0,0,0,0,0,0,0,-333,0,
            -122,0,0,0,0,0,0,0,-143,0,
            -87,0,0,0,0,0,0,0,0,0,
            0,0,0,-8,-124,0,0,-265,0,0,
            -117,-125,0,0,0,0,0,0,0,0,
            0,-27,0,-126,-89,0,0,-296,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -59,0,-183,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-66,0,0,0,
            0,0,0,0,0,-217,0,-127,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-128,0,0,0,-75,-256,0,
            0,0,0,0,-129,0,0,-188,0,0,
            0,0,0,0,-130,0,-191,0,0,0,
            0,0,0,0,0,0,0,0,-131,-101,
            0,0,0,0,-132,0,0,0,0,0,
            0,-91,0,0,0,-192,0,0,0,0,
            0,0,0,0,0,-133,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -142,-193,0,0,0,0,0,0,0,0,
            0,-153,-246,0,0,0,0,0,0,-136,
            0,0,0,0,0,0,0,-194,0,0,
            0,0,0,0,0,0,0,0,0,-259,
            -137,0,0,0,0,-102,0,0,0,0,
            0,0,-149,-195,0,0,0,0,0,0,
            0,0,0,0,-175,0,-261,0,0,0,
            0,-176,0,0,0,0,0,0,0,-196,
            0,0,0,0,0,0,0,0,0,0,
            0,-343,-227,0,0,0,0,-103,0,0,
            0,0,0,0,-138,-197,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-198,0,0,0,0,0,0,0,0,
            0,0,0,-348,0,0,0,0,0,-144,
            0,0,0,0,0,0,-228,-199,0,0,
            0,0,0,0,0,0,0,-135,-160,0,
            0,0,0,0,0,-154,0,0,0,0,
            0,0,0,-200,0,0,0,0,0,0,
            0,0,0,0,-163,-297,0,0,0,0,
            0,-156,0,0,0,0,0,0,-326,-201,
            0,0,0,0,0,0,0,0,0,0,
            -225,0,0,0,0,0,0,-164,0,0,
            0,0,0,0,0,-266,0,0,0,0,
            0,0,0,0,0,0,-244,-145,0,0,
            0,0,0,-167,0,0,0,0,0,0,
            -249,-271,0,0,0,0,0,0,0,0,
            0,0,-252,-334,0,0,0,0,0,-168,
            0,0,0,0,0,0,-335,-272,0,0,
            0,0,0,0,0,0,0,0,-340,-353,
            -309,0,0,0,0,-169,0,0,0,0,
            0,0,0,-303,0,0,0,0,0,0,
            0,0,0,0,-273,0,0,0,0,0,
            0,-170,0,0,0,0,0,0,-311,0,
            -324,0,0,0,0,0,0,0,0,0,
            -367,0,0,0,0,0,-171,0,0,0,
            0,0,0,-322,0,-320,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-181,0,0,0,0,0,0,0,-323,
            0,0,0,0,0,0,0,0,0,0,
            0,-321,-147,0,0,0,0,-185,0,0,
            0,0,0,0,0,-336,0,0,0,0,
            0,0,0,0,0,0,-363,0,0,0,
            0,0,0,-223,0,0,0,0,0,0,
            -349,0,-148,0,0,0,0,0,0,0,
            0,0,-150,-152,0,0,0,0,-240,0,
            0,0,0,0,0,-357,0,-155,0,0,
            0,0,0,0,0,-344,0,0,-157,0,
            0,0,0,-242,0,0,0,0,0,0,
            -364,0,-166,0,0,0,0,0,0,0,
            -177,0,0,-178,0,0,0,0,-243,0,
            0,0,0,0,0,-370,0,-184,0,0,
            0,0,0,0,0,-226,0,0,0,0,
            0,0,0,-231,0,0,0,0,0,0,
            -83,0,0,-67,0,-263,0,0,0,0,
            0,0,0,-211,0,-235,0,0,0,0,
            0,0,0,0,-236,0,0,0,0,0,
            0,-250,-362,-325,0,-251,-267,0,0,0,
            0,0,0,0,0,-275,-139,0,0,-220,
            0,-276,0,0,0,0,0,0,0,-371,
            0,0,-277,0,0,0,0,-278,0,0,
            0,0,0,-270,-279,0,0,0,-280,-281,
            -313,0,-282,-283,0,0,0,0,0,0,
            0,0,-180,0,0,-284,-341,-60,0,0,
            0,0,0,0,0,0,0,0,0,-23,
            -374,0,0,0,-22,-285,0,0,0,-286,
            -298,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-238,0,0,
            -300,0,-301,0,0,0,-287,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-306,0,0,0,0,0,0,
            -288,0,0,0,-269,0,0,0,0,0,
            -317,0,0,0,0,0,-289,-61,0,0,
            0,0,0,0,0,-316,-290,0,0,0,
            0,-291,-292,0,0,0,0,0,0,-115,
            -319,0,0,0,0,0,0,0,0,0,
            0,-293,0,-134,-294,0,0,0,0,0,
            0,0,0,-299,0,0,-337,0,0,0,
            0,0,0,0,0,-186,-346,0,-247,-342,
            0,0,0,-354,0,0,0,0,0,-350,
            -365,0,0,0,0,-355,-159,0,0,0,
            0,0,0,-308,0,0,-373,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-76,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-161,0,0,0,0,0,0,0,
            0,-165,0,0,0,0,0,0,0,0,
            0,0,-218,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-254,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-264,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-46,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-356,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-187,0,0,0,
            0,0,0,0,0,-68,0,0,0,0,
            0,0,0,0,0,0,0,0,-219,0,
            0,0,0,0,0,0,0,0,0,0,
            -248,0,0,0,0,0,-93,0,0,0,
            0,0,0,-338,0,0,0,0,0,0,
            -104,0,0,0,0,0,0,0,-34,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-95,0,0,0,0,0,0,0,
            0,0,0,-110,0,0,-82,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-94,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-332,-70,0,0,0,0,0,
            0,0,0,0,0,0,0,-234,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-237,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-302,0,0,-48,0,0,
            0,-304,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-318,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-315,-230,0,0,
            0,-328,0,0,0,0,0,0,0,0,
            -206,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-330,0,
            0,0,0,0,0,-331,0,0,0,0,
            0,0,-202,0,0,0,0,0,0,0,
            0,0,0,0,0,-368,0,0,0,0,
            0,0,-372,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-375,0,0,0,0,0,0,-1,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-262,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-207,0,-14,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-15,0,0,0,0,0,0,
            0,-16,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-19,0,0,
            0,0,0,0,0,-21,0,0,0,0,
            0,-26,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-140,0,0,-52,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-212,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-213,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-214,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-215,0,0,
            0,0,0,0,0,0,0,-232,-174,0,
            0,0,0,-216,0,0,0,0,0,0,
            0,0,0,-53,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-6,0,0,
            -208,0,-20,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-96,0,0,0,0,0,-39,0,
            0,-307,-57,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-97,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-233,0,0,0,0,0,0,0,
            0,-55,-98,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-99,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-100,0,0,0,0,0,
            0,-173,0,0,-327,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -229,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-203,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-268,-352,0,0,0,0,0,
            0,-255,-204,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-305,
            0,0,0,-17,0,0,0,-77,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-18,-366,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-69,0,0,0,0,0,0,0,
            0,0,0,-88,0,0,-329,-162,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-179,0,0,0,0,0,0,0,-78,
            0,0,0,0,0,-339,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-358,0,0,0,-118,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-158,0,0,0,-359,0,0,0,-369,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    @Override
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    @Override
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            121,2,122,49,49,18,18,53,53,26,
            26,1,1,3,3,3,3,4,4,4,
            5,6,6,6,6,6,6,6,6,88,
            88,103,7,7,7,7,7,7,7,7,
            7,7,7,8,8,9,9,9,9,14,
            14,14,15,15,15,16,16,16,16,16,
            17,17,17,19,19,20,20,21,21,22,
            22,23,23,24,24,28,28,28,28,28,
            28,28,28,28,28,28,28,38,31,25,
            123,123,104,104,62,39,39,39,39,39,
            39,39,40,40,40,30,30,105,105,77,
            77,41,41,42,42,42,71,71,43,43,
            43,43,43,44,44,44,44,44,60,60,
            29,29,29,29,29,54,54,54,95,95,
            90,90,90,90,91,91,91,92,92,92,
            93,93,93,94,94,94,89,89,82,82,
            83,55,57,57,57,57,57,72,74,74,
            74,74,74,74,74,74,74,74,74,74,
            81,78,78,124,125,84,84,79,79,79,
            96,106,106,107,107,97,97,97,58,126,
            126,108,98,98,98,80,80,127,109,109,
            110,110,99,99,32,33,33,33,56,52,
            52,45,45,45,45,34,34,35,46,46,
            47,36,36,100,100,48,129,129,128,128,
            59,59,59,59,59,59,59,59,59,111,
            63,63,63,63,37,85,85,75,75,75,
            76,76,65,65,130,130,64,64,86,86,
            86,66,66,66,67,68,68,68,69,69,
            69,69,73,73,50,50,51,132,131,131,
            131,131,112,133,134,134,135,135,136,136,
            121,121,137,137,113,113,113,113,138,138,
            114,114,114,70,115,115,10,10,10,27,
            27,11,11,139,139,116,116,116,117,117,
            140,140,118,118,12,12,141,141,119,119,
            119,119,13,61,142,142,143,143,120,120,
            120,101,101,101,7,7,7,7,16,16,
            24,4,40,144,102,102,102,87,87,29,
            60,54,83,83,83,108,108,108,127,124,
            125,37,96,135,135,145,146,112,77,329,
            1714,247,17,21,18,898,1031,45,1055,371,
            316,317,318,1074,1062,1134,1118,403,1155,1145,
            1175,1169,1196,75,2102,961,1782,92,734,2014,
            1751,136,214,115,1679,20,612,17,21,18,
            898,43,44,1871,20,755,17,21,18,898,
            43,45,1055,138,135,137,161,1074,1062,1134,
            1118,1220,1155,1145,1175,1972,37,339,961,31,
            1971,140,2293,167,730,1664,967,144,147,150,
            153,314,285,2654,28,1230,364,129,232,499,
            2636,2662,2688,2696,1072,1456,180,1865,823,87,
            111,2702,349,1711,96,371,316,317,318,651,
            712,1542,1263,1744,95,97,98,99,100,371,
            316,317,318,1163,211,967,229,136,214,656,
            225,233,1871,20,941,17,21,18,898,43,
            40,136,214,255,214,1521,180,242,88,138,
            135,137,161,347,1953,371,316,317,318,1830,
            295,323,1678,143,135,137,161,140,419,167,
            1054,25,169,144,147,150,153,136,214,2654,
            1440,142,364,167,1386,499,2636,2662,2688,2696,
            1072,256,214,800,128,754,617,2702,322,138,
            135,137,161,2112,635,967,1871,20,426,17,
            21,18,898,43,45,1055,1971,140,1974,167,
            1074,1062,1825,144,147,150,153,1926,90,2654,
            343,1288,364,851,232,499,2636,2662,2688,2696,
            1072,319,316,317,318,1952,1676,2702,1703,20,
            1784,17,21,18,898,1031,45,1055,3068,256,
            214,1013,1074,1062,1134,1118,1061,1155,1145,1175,
            1169,1196,75,443,1610,20,282,17,21,18,
            898,43,36,927,961,31,1586,20,1784,17,
            21,18,898,1031,45,1055,28,1230,283,1230,
            1074,1062,1134,1118,284,1155,1145,1175,1169,1196,
            75,364,1610,20,282,17,21,18,898,43,
            36,288,2113,247,1643,20,1592,17,21,18,
            898,1031,45,1055,500,3114,283,1230,1074,1062,
            1134,1118,228,1155,1145,1175,1169,1196,75,1542,
            1871,20,282,17,21,18,898,43,39,290,
            289,248,1871,20,499,17,21,18,898,43,
            45,1055,28,1230,283,1230,1074,1062,1829,1551,
            2014,255,214,1337,499,1727,20,24,17,21,
            18,898,1031,45,1055,961,188,159,291,1074,
            1062,1134,1118,1500,1155,1145,1175,1169,1196,75,
            181,1871,20,282,17,21,18,898,43,45,
            1055,335,396,1751,20,1796,17,21,18,898,
            1031,45,1055,181,549,283,1230,1074,1062,1134,
            1118,1082,1155,1145,1175,1169,1196,75,755,1871,
            20,282,17,21,18,898,43,38,387,226,
            993,435,20,739,17,21,18,898,1031,45,
            1055,961,187,283,1230,1074,1062,1134,1118,311,
            1155,1145,1175,1169,1196,75,2014,1871,20,488,
            17,21,18,898,43,37,292,1967,20,313,
            17,21,18,898,1031,45,1055,49,2036,1138,
            240,1074,1062,1134,1118,1089,1155,1145,1175,1169,
            1196,75,336,1289,977,332,1919,20,2217,17,
            21,18,898,1031,45,1055,734,115,1843,205,
            1074,1062,1134,1118,960,1155,1145,1175,1169,1196,
            75,363,1871,20,1148,17,21,18,898,43,
            45,1055,961,189,324,1678,1074,1062,1134,1118,
            1500,1155,1145,1175,1169,1196,94,1871,20,1149,
            17,21,18,898,1031,45,1055,1522,334,105,
            635,1074,1062,1134,1118,1614,1155,1145,1175,1169,
            1196,75,418,533,20,92,17,21,18,898,
            1031,45,1055,594,1775,330,125,1074,1062,1134,
            1118,1339,1155,1145,1175,1169,1196,75,2131,1775,
            20,1535,17,21,18,898,367,1914,941,1967,
            20,426,17,21,18,898,1031,45,1055,961,
            1367,1082,241,1074,1062,1134,1118,346,1155,1145,
            1175,1169,1196,75,413,1779,2879,332,1971,342,
            2452,419,36,1996,319,316,317,318,28,1230,
            985,1711,1521,180,868,49,279,2017,920,337,
            967,2279,371,316,317,318,1766,128,673,225,
            773,1799,20,823,17,21,18,898,356,219,
            457,222,701,88,136,214,621,1871,20,116,
            17,21,18,898,43,36,1871,20,416,17,
            21,18,898,43,45,1055,139,135,137,161,
            1074,1062,1134,1118,798,1897,156,663,537,916,
            535,535,22,451,141,325,167,331,823,1419,
            145,148,151,154,774,1478,2654,1871,20,365,
            17,21,18,898,1031,45,1055,1061,2092,355,
            1082,1074,1062,1134,1118,1116,1155,1145,1175,1169,
            1196,75,49,897,2083,86,1871,20,361,17,
            21,18,898,1031,45,1055,1037,244,308,370,
            1074,1062,1134,1118,261,1155,1145,1175,1169,1196,
            75,635,1871,20,85,17,21,18,898,1031,
            45,1055,419,419,1888,2024,1074,1062,1134,1118,
            1524,1155,1145,1175,1169,1196,75,124,1871,20,
            84,17,21,18,898,1031,45,1055,128,196,
            2149,2035,1074,1062,1134,1118,1082,1155,1145,1175,
            1169,1196,75,635,1871,20,83,17,21,18,
            898,1031,45,1055,636,804,1960,2152,1074,1062,
            1134,1118,1992,1155,1145,1175,1169,1196,75,112,
            1871,20,82,17,21,18,898,1031,45,1055,
            28,1230,601,635,1074,1062,1134,1118,1082,1155,
            1145,1175,1169,1196,75,1547,1871,20,81,17,
            21,18,898,1031,45,1055,19,28,1230,127,
            1074,1062,1134,1118,276,1155,1145,1175,1169,1196,
            75,277,1871,20,80,17,21,18,898,1031,
            45,1055,28,1230,961,297,1074,1062,1134,1118,
            1251,1155,1145,1175,1169,1196,75,635,1871,20,
            79,17,21,18,898,1031,45,1055,49,49,
            419,2251,1074,1062,1134,1118,2050,1155,1145,1175,
            1169,1196,75,123,1871,20,78,17,21,18,
            898,1031,45,1055,1669,1782,635,501,1074,1062,
            1134,1118,1112,1155,1145,1175,1169,1196,75,635,
            1871,20,77,17,21,18,898,1031,45,1055,
            339,49,2975,638,1074,1062,1134,1118,1082,1155,
            1145,1175,1169,1196,75,3025,1871,20,76,17,
            21,18,898,1031,45,1055,231,49,1271,2882,
            1074,1062,1134,1118,1082,1155,1145,1175,1169,1196,
            75,1300,1871,20,93,17,21,18,898,1031,
            45,1055,712,1878,2014,1831,1074,1062,1134,1118,
            1082,1155,1145,1175,1169,1196,75,1364,1871,20,
            1576,17,21,18,898,1031,45,1055,1018,2014,
            635,1300,1074,1062,1134,1118,1082,1155,1145,1175,
            1169,1196,75,195,1871,20,1612,17,21,18,
            898,43,45,1055,1250,823,3090,182,1074,1062,
            1134,1118,1082,1155,1145,1175,1169,1196,94,1871,
            20,1682,17,21,18,898,43,45,1055,876,
            424,635,206,1074,1062,1134,1118,1082,1155,1145,
            1175,1169,1196,94,1871,20,823,17,21,18,
            898,1031,45,1055,243,1277,363,118,1074,1062,
            1134,1118,1082,1155,1145,1175,1169,1196,75,1509,
            1871,20,360,17,21,18,898,1031,45,1055,
            23,213,823,1415,1074,1062,1134,1118,1082,1155,
            1145,1175,1169,1196,75,245,1871,20,74,17,
            21,18,898,43,45,1055,352,961,299,1686,
            1074,1062,1134,1118,2091,1155,1145,1175,1169,1196,
            94,1871,20,1543,17,21,18,898,43,45,
            1055,246,235,677,1058,1074,1062,1134,1118,1082,
            1155,1145,1175,1169,1196,94,1871,20,1646,17,
            21,18,898,43,45,1055,2014,321,203,1673,
            1074,1062,1134,1118,1082,1155,1145,1175,1169,1196,
            94,1871,20,848,17,21,18,898,43,45,
            1055,1128,341,1783,789,1074,1062,1134,1118,1082,
            1155,1145,1175,1169,1196,94,1871,20,1243,17,
            21,18,898,43,45,1055,67,340,204,562,
            1074,1062,1134,1118,569,1155,1145,1175,1169,1196,
            94,199,1664,389,1871,20,1082,17,21,18,
            898,43,35,1810,1871,20,1504,17,21,18,
            898,43,45,1055,274,1078,87,111,1074,1830,
            1222,96,1639,1172,2070,2010,1396,951,1861,1263,
            109,95,97,98,99,100,1030,1,1664,389,
            1871,20,1192,17,21,18,898,43,45,1055,
            823,110,370,1827,1074,1062,1134,1118,1875,1155,
            1947,388,87,111,1082,960,1222,96,107,1122,
            168,1542,296,299,1527,1263,109,95,97,98,
            99,100,353,264,1664,389,1668,2095,1823,20,
            315,17,21,18,898,354,1797,110,370,298,
            685,823,2883,255,214,1240,2090,388,87,111,
            2097,1082,1222,96,108,319,316,317,318,256,
            214,1263,109,95,97,98,99,100,413,2482,
            3060,1082,2922,1082,673,225,230,1568,319,316,
            317,318,812,110,370,219,457,222,224,2529,
            386,2536,831,388,2096,2279,1847,1997,414,294,
            107,2101,673,225,773,133,1664,389,2834,775,
            384,1082,326,219,457,222,224,1923,1847,20,
            621,17,21,18,898,41,1634,2054,1925,280,
            87,111,2109,2124,1222,96,319,316,317,318,
            784,1082,535,1263,109,95,97,98,99,100,
            156,663,2111,2922,1393,1385,535,451,106,1302,
            673,225,230,992,1710,110,370,2135,774,1061,
            312,220,457,222,224,388,413,1758,2883,940,
            1082,535,108,2092,1082,275,319,316,317,318,
            2154,1082,270,1282,1275,273,662,778,281,535,
            309,370,1561,2279,1670,3392,2883,1082,198,2563,
            673,225,230,3392,319,316,317,318,3392,260,
            3392,219,457,222,224,2583,198,3392,621,1438,
            1703,2264,3392,413,3392,2883,3392,1223,673,225,
            230,3392,3392,319,316,317,318,3392,3392,219,
            457,222,224,3392,3392,1223,1987,3392,156,663,
            2279,3392,3392,1477,1782,451,3392,673,225,230,
            3392,3392,2010,3392,3032,3392,194,3392,219,457,
            222,224,1644,1871,20,621,17,21,18,898,
            43,45,1055,3392,193,3392,3392,1074,1062,1134,
            1921,3392,3146,770,1999,3392,673,225,230,1436,
            3392,2477,199,3392,3392,157,663,219,457,222,
            224,3392,3392,1996,264,535,3392,278,3392,3392,
            1497,275,3392,319,316,317,318,3392,268,1282,
            1275,273,3392,673,225,230,3392,3392,3392,3392,
            2922,3392,2092,1336,219,457,222,224,265,3392,
            812,831,210,320,316,317,318,3392,275,2055,
            3392,2883,1471,1786,3392,268,1282,1275,273,319,
            316,317,318,3392,3392,3392,2618,3392,260,3392,
            3392,3392,3392,3392,3392,1756,2264,1542,1931,1703,
            3392,3392,262,673,225,230,1895,20,3392,17,
            21,18,898,34,219,457,222,224,3392,1871,
            20,1987,17,21,18,898,43,45,1055,255,
            214,1477,1782,1074,1062,1134,1118,2080,1155,1145,
            1937,3392,3392,3392,1670,3392,2883,319,316,317,
            318,398,3392,2972,320,316,317,318,3392,413,
            3392,2883,3392,3392,2922,3392,3392,3146,3392,320,
            316,317,318,657,1405,535,3392,200,673,225,
            230,3392,549,3392,49,3392,967,758,3392,219,
            457,222,224,673,225,230,1987,319,316,317,
            318,3392,2092,3392,219,457,222,224,1472,88,
            275,3140,3392,3392,2922,1093,758,268,1282,1275,
            273,673,225,1315,992,3392,319,316,317,318,
            210,3392,220,457,222,1251,3392,267,260,3392,
            1511,1786,3164,2922,758,1459,3392,389,1438,1703,
            673,225,230,992,319,316,317,318,844,1664,
            967,220,457,222,224,3392,3392,3392,3392,3392,
            88,2922,3392,3392,198,1170,1308,3392,673,225,
            1315,992,3392,87,111,892,1664,967,96,220,
            457,222,224,3392,3392,3392,1263,104,95,97,
            98,99,100,2271,3392,1006,1664,967,1384,1256,
            87,111,1054,1664,967,96,3392,3392,320,316,
            317,318,3392,1263,102,95,97,98,99,100,
            87,111,657,3392,535,96,3392,87,111,3392,
            3392,3392,96,1263,362,95,97,98,99,100,
            1263,103,95,97,98,99,100,2060,49,535,
            967,2092,1168,1664,967,3392,3392,319,316,317,
            318,1871,20,3392,17,21,18,898,43,45,
            1055,3392,3392,88,2922,1802,2092,87,111,1871,
            3392,3392,96,3392,812,3392,3392,260,3392,3392,
            1263,120,95,97,98,99,100,2000,1703,1216,
            1664,967,3392,3392,3392,3392,1264,1664,967,3392,
            1946,3392,260,1871,20,3392,17,21,18,898,
            43,48,1931,1703,87,111,1312,1664,967,96,
            3392,87,111,1360,1664,967,96,1263,115,95,
            97,98,99,100,1263,2016,95,97,98,99,
            100,87,111,1408,1664,967,96,3392,87,111,
            590,3392,485,96,1263,114,95,97,98,99,
            100,1263,122,95,97,98,99,100,87,111,
            3392,3392,3392,96,3392,3392,306,3392,369,558,
            3392,1263,121,95,97,98,99,100,319,316,
            317,318,3392,3392,1871,20,1113,17,21,18,
            898,43,45,1813,3392,2922,371,316,317,318,
            305,370,3392,3392,656,992,3392,3392,3392,3392,
            310,3392,1466,3392,319,316,317,318,136,214,
            3392,3392,371,316,317,318,3392,275,3392,3392,
            3392,2173,3392,3392,270,1282,1275,273,1531,3392,
            146,135,137,161,136,214,1991,3392,371,316,
            317,318,2001,302,304,3392,371,316,317,318,
            3392,407,371,316,317,318,149,135,137,161,
            136,214,3392,419,3392,967,1079,2848,136,214,
            3392,3392,3392,3392,136,214,320,316,317,318,
            3392,3392,152,135,137,161,3392,3392,88,126,
            155,135,137,161,1303,3392,366,135,137,161,
            1871,20,3392,17,21,18,898,43,45,1055,
            3392,3392,3392,3392,1074,1833,1871,20,724,17,
            21,18,898,43,45,1055,3392,3392,3392,3392,
            1074,1834,1871,20,3392,17,21,18,898,43,
            45,1055,3392,3392,3392,3392,1074,1846,1871,20,
            3392,17,21,18,898,43,45,1055,49,1432,
            967,2143,1074,1866,1871,20,3392,17,21,18,
            898,43,45,1055,758,3392,3392,278,1074,1870,
            3392,3392,3392,88,319,316,317,318,665,1891,
            485,1871,20,917,17,21,18,898,43,45,
            1818,2922,3392,319,316,317,318,3392,656,225,
            234,992,3392,1459,306,389,3392,558,275,1240,
            2726,3392,1102,1240,535,268,1282,1275,273,319,
            316,317,318,319,316,317,318,3392,88,1459,
            3392,389,198,1170,1308,1756,2922,3392,305,370,
            2922,198,3392,49,3392,967,812,3392,310,3392,
            812,3392,1533,1459,88,389,3392,3392,198,1170,
            1308,2271,320,316,317,318,3392,1464,88,1459,
            1223,389,2307,3392,1893,3392,2336,3392,88,952,
            3392,3392,198,1170,1308,3392,3392,2271,3392,3392,
            3392,303,304,1490,88,1459,3392,389,198,1170,
            1308,3392,1240,3392,3392,920,3392,967,3392,193,
            913,2271,319,316,317,318,3392,1516,1484,1999,
            88,1316,3392,389,198,1170,1308,2271,3392,2922,
            88,3392,3392,1542,3392,3392,116,1871,20,812,
            17,21,18,898,43,47,88,3392,3392,3392,
            1061,3392,116,2271,1459,920,389,967,3392,1567,
            3392,3392,1240,1871,20,2618,17,21,18,898,
            43,46,319,316,317,318,1510,3392,3392,88,
            88,1078,370,198,1170,1308,116,3392,3392,2922,
            1240,3392,1406,3392,423,3392,3392,3392,2040,812,
            319,316,317,318,319,316,317,318,320,316,
            317,318,2271,3392,3392,3392,3392,2922,1961,524,
            920,2428,967,3392,3392,1946,2011,812,3392,319,
            316,317,318,1895,20,3392,17,21,18,898,
            33,3392,3392,3392,2074,88,2428,49,2080,967,
            3392,116,3392,2364,319,316,317,318,319,316,
            317,318,1943,20,3392,17,21,18,898,1787,
            2069,3182,88,3392,3392,2922,2110,3392,2004,3392,
            319,316,317,318,3392,1483,319,316,317,318,
            785,2027,3392,3392,2126,3392,3392,3168,2085,3392,
            3392,3392,3392,3186,319,316,317,318,320,316,
            317,318,2100,3392,3392,861,2138,3392,3392,3392,
            2143,3190,320,316,317,318,320,316,317,318,
            320,316,317,318,3392,3392,3392,3392,3392,3392,
            3392,3392,3392,3392,3392,3392,3392,3392,3392,3392,
            3392,3392,3392,3392,3392,3392,3392,3392,3392,3392,
            3392,3392,3392,3392,3392,3392,3392,3392,3392,1689,
            3392,0,1,456,0,1,500,0,1,583,
            0,1,623,0,500,130,0,583,130,0,
            623,130,0,500,131,0,583,131,0,623,
            131,0,500,132,0,583,132,0,623,132,
            0,623,186,0,583,186,0,500,186,0,
            186,190,0,623,185,0,583,185,0,500,
            185,0,185,190,0,500,133,0,583,133,
            0,623,133,0,500,134,0,583,134,0,
            623,134,0,11,227,0,500,369,0,583,
            369,0,623,369,0,224,236,0,3400,1,
            0,623,381,0,583,381,0,500,381,0,
            593,32,0,2304,32,0,623,254,0,583,
            254,0,500,254,0,1,3630,0,224,237,
            0,180,20,0,8,10,0,1984,119,0,
            1,3619,0,367,356,0,368,357,0,113,
            2556,0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    @Override
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    @Override
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,0,0,37,38,39,
            40,41,42,43,44,45,46,47,0,49,
            50,51,52,53,54,55,56,57,58,59,
            60,25,62,63,64,65,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,66,67,37,38,39,40,41,42,43,
            44,45,46,47,0,49,50,51,52,53,
            54,55,56,57,58,59,60,13,62,63,
            64,65,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,0,0,37,
            38,39,40,41,42,43,44,45,46,47,
            0,49,50,51,52,53,54,55,56,57,
            58,59,60,13,62,63,64,65,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,66,67,37,38,39,40,41,
            42,43,44,45,46,47,0,49,50,51,
            52,53,54,55,56,57,58,59,60,13,
            62,63,64,0,1,2,3,4,5,6,
            7,8,9,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,26,
            27,28,29,30,31,32,33,34,0,0,
            37,38,39,40,41,42,43,44,45,46,
            47,0,49,50,51,52,53,54,55,56,
            57,58,59,60,0,62,63,64,0,1,
            2,0,4,5,6,7,8,9,0,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,0,27,28,29,30,31,
            32,33,0,0,66,67,3,4,0,1,
            7,8,4,35,6,7,8,49,50,51,
            52,53,54,55,56,57,58,59,60,26,
            62,63,64,0,1,0,3,0,1,6,
            3,6,0,35,11,12,82,14,15,16,
            48,48,0,1,2,0,4,0,0,7,
            8,3,0,6,2,0,4,5,35,7,
            8,68,35,36,0,1,2,3,84,5,
            6,48,0,9,26,11,12,13,14,15,
            16,17,18,19,20,21,22,23,65,66,
            67,68,28,70,71,72,73,74,75,76,
            0,78,79,80,81,82,83,84,85,86,
            87,88,89,90,91,92,93,94,95,96,
            97,0,1,68,3,80,81,6,0,0,
            98,2,11,12,5,14,15,16,10,10,
            68,77,0,88,89,90,91,92,93,94,
            95,96,97,0,0,2,35,4,5,0,
            7,8,0,1,2,3,0,5,6,48,
            4,9,0,11,12,13,14,15,16,17,
            18,19,20,21,22,23,65,66,67,68,
            28,70,71,72,73,74,75,76,0,78,
            79,80,81,82,83,84,85,86,87,88,
            89,90,91,92,93,94,95,96,97,0,
            1,2,3,4,5,6,7,8,9,0,
            0,1,2,3,4,37,6,7,8,77,
            10,0,1,24,25,26,27,28,29,30,
            31,32,33,34,24,25,26,27,28,29,
            30,31,32,33,0,35,36,3,49,50,
            51,52,53,54,55,56,57,58,59,60,
            0,62,63,64,4,0,0,7,8,4,
            26,0,7,8,0,1,2,3,4,5,
            6,7,8,9,24,25,0,27,28,29,
            30,31,32,33,0,1,2,98,24,25,
            26,27,28,29,30,31,32,33,34,49,
            50,51,52,53,54,55,56,57,58,59,
            60,0,1,49,50,51,52,53,54,55,
            56,57,58,59,60,69,62,63,64,0,
            1,2,3,0,5,6,3,61,9,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,0,0,26,2,0,1,2,
            99,4,98,34,7,8,37,38,39,40,
            41,42,43,44,45,46,47,0,24,2,
            3,4,5,0,7,8,9,4,0,1,
            2,3,4,10,6,7,8,0,65,0,
            1,24,25,0,27,28,29,30,31,32,
            33,34,24,25,26,27,28,29,30,31,
            32,33,0,35,36,3,49,50,51,52,
            53,54,55,56,57,58,59,60,35,62,
            63,64,65,0,1,2,3,0,5,6,
            0,1,9,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,0,0,26,
            73,74,75,76,0,78,79,34,11,12,
            37,38,39,40,41,42,43,44,45,46,
            47,0,1,2,3,48,5,6,0,77,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,0,0,26,2,0,
            4,5,3,7,8,34,0,1,37,38,
            39,40,41,42,43,44,45,46,47,0,
            0,2,3,4,5,26,7,8,9,0,
            0,1,2,3,4,36,6,7,8,0,
            0,35,2,24,25,5,27,28,29,30,
            31,32,33,34,24,25,26,27,28,29,
            30,31,32,33,69,35,36,0,49,50,
            51,52,53,54,55,56,57,58,59,60,
            0,62,63,64,65,0,1,2,3,0,
            5,6,0,1,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,0,
            0,26,73,74,75,76,0,78,79,34,
            11,12,37,38,39,40,41,42,43,44,
            45,46,47,0,1,2,3,0,5,6,
            0,1,9,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,0,0,26,
            2,0,4,5,3,7,8,34,0,1,
            37,38,39,40,41,42,43,44,45,46,
            47,0,0,2,3,4,5,0,7,8,
            9,0,0,2,3,0,4,36,61,7,
            8,0,86,87,13,24,25,0,27,28,
            29,30,31,32,33,34,24,25,61,27,
            28,29,30,31,32,33,69,36,0,1,
            49,50,51,52,53,54,55,56,57,58,
            59,60,0,62,63,64,65,0,1,2,
            3,0,5,6,3,48,9,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,0,0,26,73,74,75,76,83,78,
            79,34,11,12,37,38,39,40,41,42,
            43,44,45,46,47,0,1,2,3,0,
            5,6,3,61,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,0,
            69,26,0,4,2,26,7,8,77,34,
            0,1,37,38,39,40,41,42,43,44,
            45,46,47,0,1,2,3,48,5,6,
            0,1,9,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,0,0,26,
            2,4,0,5,7,8,0,34,10,0,
            37,38,39,40,41,42,43,44,45,46,
            47,0,1,2,3,0,5,6,3,4,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,0,0,26,0,4,
            2,26,7,8,6,34,10,48,37,38,
            39,40,41,42,43,44,45,46,47,0,
            1,2,3,0,5,6,3,0,9,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,0,0,26,2,4,0,26,
            7,8,0,34,2,0,37,38,39,40,
            41,42,43,44,45,46,47,0,1,2,
            3,48,5,6,0,1,9,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,0,1,26,3,0,1,2,3,0,
            1,34,3,48,37,38,39,40,41,42,
            43,44,45,46,47,0,1,2,0,4,
            5,69,7,8,9,0,35,36,10,4,
            35,36,7,8,0,36,0,0,2,24,
            25,5,27,28,29,30,31,32,33,24,
            25,14,27,28,29,30,31,32,33,0,
            0,2,3,0,49,50,51,52,53,54,
            55,56,57,58,59,60,0,62,63,64,
            0,0,2,0,4,5,0,7,8,9,
            0,10,0,10,4,36,4,7,8,7,
            8,0,0,1,24,25,0,27,28,29,
            30,31,32,33,24,25,10,27,28,29,
            30,31,32,33,61,24,25,0,27,49,
            50,51,52,53,54,55,56,57,58,59,
            60,14,62,63,64,0,1,2,3,0,
            5,6,66,67,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,0,
            1,2,3,0,5,6,3,0,9,0,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,0,1,2,0,4,0,6,
            7,8,0,1,2,0,1,5,6,36,
            65,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,0,35,0,
            1,2,0,4,61,0,7,8,0,1,
            2,0,10,5,6,10,77,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,0,1,2,0,68,5,6,0,
            1,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,48,
            61,5,6,66,67,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            0,1,2,0,0,5,6,0,0,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,0,1,2,0,0,5,
            6,0,0,9,6,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,1,
            2,0,0,5,6,24,25,9,27,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,0,1,2,68,0,5,6,0,
            0,9,6,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,71,
            72,5,6,24,25,9,27,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            0,1,2,0,0,5,6,0,0,9,
            6,11,12,13,14,15,16,17,18,19,
            20,21,22,23,0,1,2,71,72,5,
            6,24,25,9,27,11,12,13,14,15,
            16,17,18,19,20,21,22,23,0,1,
            2,0,0,5,6,0,0,9,0,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,0,1,2,71,72,5,6,24,
            25,9,27,11,12,13,14,15,16,17,
            18,19,20,21,22,23,0,1,2,0,
            0,5,6,3,0,9,0,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            0,0,1,0,4,0,0,7,8,4,
            0,6,7,8,4,83,36,7,8,0,
            1,2,3,0,24,25,3,27,28,29,
            30,31,32,33,24,25,35,27,28,29,
            30,31,32,33,0,0,1,3,4,0,
            0,7,8,4,35,36,7,8,0,0,
            15,16,3,0,0,1,2,48,4,0,
            26,7,8,4,69,6,7,8,0,0,
            35,2,4,0,5,7,8,4,65,0,
            7,8,48,4,0,36,7,8,4,0,
            0,7,8,3,0,0,0,48,3,0,
            0,0,68,4,35,70,7,8,0,0,
            0,0,0,4,3,61,7,8,24,25,
            85,27,10,0,0,0,36,3,69,4,
            0,36,7,8,0,82,35,0,48,70,
            10,4,0,48,7,8,4,36,0,7,
            8,0,0,0,2,66,67,5,10,0,
            0,10,66,67,0,0,0,0,0,61,
            10,70,0,0,10,0,0,0,0,0,
            80,81,0,0,61,0,0,0,0,65,
            0,0,0,0,84,61,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,61,0,0,0,0,0,
            61,0,0,0,0,0,61,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    @Override
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            3392,1,5946,1736,3242,5940,1,1,1,1,
            926,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,3401,1,1,1,
            1,1,1,1,3493,55,345,1458,980,942,
            1211,1663,464,1360,1039,1653,2723,1613,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,3736,1,1,1,3399,8,3374,3374,3374,
            3374,3374,3374,3374,3374,3374,3374,3374,3374,3374,
            3374,3374,3374,3374,3374,3374,3374,3374,3374,3374,
            3374,3374,3374,3374,3374,3374,3374,3374,3374,3374,
            3374,801,2491,3374,3374,3374,3374,3374,3374,3374,
            3374,3374,3374,3374,350,3374,3374,3374,3374,3374,
            3374,3374,3374,3374,3374,3374,3374,905,3374,3374,
            3374,3374,3392,1,5946,1736,3242,5940,1,1,
            1,1,926,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3401,1,
            1,1,1,1,1,1,3493,359,287,1458,
            980,942,1211,1663,464,1360,1039,1653,2723,1613,
            3392,1,1,1,1,1,1,1,1,1,
            1,1,1,1041,1,1,1,3399,3392,1,
            5946,3402,3242,5940,1,1,1,1,926,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,3401,1,1,1,1,1,
            1,1,3493,801,2491,1458,980,942,1211,1663,
            464,1360,1039,1653,2723,1613,3392,1,1,1,
            1,1,1,1,1,1,1,1,1,905,
            1,1,1,3392,1,5946,3402,3242,5940,1,
            1,1,1,926,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,3401,
            1,1,1,1,1,1,1,3493,358,3392,
            1458,980,942,1211,1663,464,1360,1039,1653,2723,
            1613,3392,1,1,1,1,1,1,1,1,
            1,1,1,1,67,1,1,1,3392,2939,
            3403,3392,623,3404,1107,500,583,3132,221,877,
            839,3408,1754,3103,2226,1938,3405,3406,3407,740,
            522,1848,3607,3609,71,3608,3556,3557,3555,3610,
            3558,3554,348,236,801,2491,224,3335,269,2819,
            3335,3335,623,851,254,500,583,3561,3566,3565,
            3563,3564,3562,3567,3568,3560,3569,3570,3571,224,
            2853,3089,3064,1,3404,3392,3404,1,2819,3404,
            266,2257,3392,851,3404,3404,1116,3404,3404,3404,
            391,224,1,1860,3619,63,3251,3392,1,3245,
            3248,3402,186,3118,3290,43,3281,3290,3404,3287,
            3284,224,851,266,1,2939,3403,3396,2239,3404,
            664,3404,158,1091,3401,877,839,3408,1754,3103,
            2226,1938,3405,3406,3407,740,522,1848,3404,3404,
            3404,3404,916,3404,3404,3404,3404,3404,3404,3404,
            3392,3404,3404,3404,3404,3404,3404,3404,3404,3404,
            3404,3404,3404,3404,3404,3404,3404,3404,3404,3404,
            3404,1,3403,1420,3403,752,596,3403,3392,3392,
            3241,3403,3403,3403,3404,3403,3403,3403,418,1075,
            714,3395,3392,1394,1368,1342,1316,1290,1238,1264,
            1212,1186,1157,185,3392,3302,3403,3293,3302,3392,
            3299,3296,3392,2939,3403,3396,1,3404,702,3403,
            3242,1091,3392,877,839,3408,1754,3103,2226,1938,
            3405,3406,3407,740,522,1848,3403,3403,3403,3403,
            1498,3403,3403,3403,3403,3403,3403,3403,119,3403,
            3403,3403,3403,3403,3403,3403,3403,3403,3403,3403,
            3403,3403,3403,3403,3403,3403,3403,3403,3403,3392,
            1,1,3402,3242,1,1,1,1,1,3392,
            357,368,368,3386,368,3377,3386,368,368,3395,
            5905,3392,927,1,1,3401,1,1,1,1,
            1,1,1,3699,368,368,3386,368,368,368,
            368,368,368,368,3392,368,3386,3402,1,1,
            1,1,1,1,1,1,1,1,1,1,
            130,1,1,1,3260,183,1,3254,3257,623,
            3401,113,500,583,3392,1,1,3402,3242,1,
            1,1,1,1,3607,3609,3392,3608,3556,3557,
            3555,3610,3558,3554,1,1860,3619,301,1,1,
            3401,1,1,1,1,1,1,1,3699,3561,
            3566,3565,3563,3564,3562,3567,3568,3560,3569,3570,
            3571,3392,570,1,1,1,1,1,1,1,
            1,1,1,1,1,3651,1,1,1,3392,
            1,5946,3402,1,5940,1,3338,2378,1,926,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,3392,327,3401,3720,254,1860,3619,
            3389,623,300,3493,500,583,1458,980,942,1211,
            1663,464,1360,1039,1653,2723,1613,3392,3721,1,
            192,1,1,1,1,1,1,3242,20,3371,
            180,3371,180,926,3371,180,180,60,3399,3392,
            793,1,1,272,1,1,1,1,1,1,
            1,3589,180,180,3371,180,180,180,180,180,
            180,180,3392,3371,3371,3396,1,1,1,1,
            1,1,1,1,1,1,1,1,851,1,
            1,1,192,3392,1,5946,3402,257,5940,1,
            3392,800,1,926,1,1,1,1,1,1,
            1,1,1,1,1,1,1,52,3392,3401,
            2824,2808,2792,2776,3392,2760,1764,3493,2851,2634,
            1458,980,942,1211,1663,464,1360,1039,1653,2723,
            1613,3392,1,5946,3402,1139,5940,1,3392,3395,
            1,926,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,207,3401,5941,1,
            623,5941,117,500,583,3493,223,606,1458,980,
            942,1211,1663,464,1360,1039,1653,2723,1613,3392,
            3392,1,191,1,1,117,1,1,1,3392,
            356,367,367,3383,367,117,3383,367,367,62,
            3392,851,3403,1,1,3404,1,1,1,1,
            1,1,1,3589,367,367,3383,367,367,367,
            367,367,367,367,3650,367,3383,3392,1,1,
            1,1,1,1,1,1,1,1,1,1,
            3392,1,1,1,191,3392,1,5946,3402,3392,
            5940,1,11,3323,1,926,1,1,1,1,
            1,1,1,1,1,1,1,1,1,54,
            3392,3401,2824,2808,2792,2776,73,2760,1764,3493,
            2851,2634,1458,980,942,1211,1663,464,1360,1039,
            1653,2723,1613,3392,1,5946,3402,3392,5940,1,
            3392,460,1,926,1,1,1,1,1,1,
            1,1,1,1,1,1,1,3392,378,3401,
            5945,3392,623,5945,3398,500,583,3493,351,1011,
            1458,980,942,1211,1663,464,1360,1039,1653,2723,
            1613,3392,3392,1,192,1,1,3392,1,1,
            1,3392,131,1719,3398,69,3269,3397,2405,3263,
            3266,61,433,513,1694,1,1,89,1,1,
            1,1,1,1,1,3589,3607,3609,2432,3608,
            3556,3557,3555,3610,3558,3554,1524,3397,338,1412,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,192,3392,1,5946,
            3402,3392,5940,1,3396,1446,1,926,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,53,3392,3401,2824,2808,2792,2776,1800,2760,
            1764,3493,2851,2634,1458,980,942,1211,1663,464,
            1360,1039,1653,2723,1613,3392,1,5946,3402,3392,
            5940,1,3402,2,1,926,1,1,1,1,
            1,1,1,1,1,1,1,1,1,254,
            1726,3401,3392,623,1824,3401,500,583,3395,3493,
            3392,2991,1458,980,942,1211,1663,464,1360,1039,
            1653,2723,1613,3392,1,5946,3402,2053,5940,1,
            3392,2478,1,926,1,1,1,1,1,1,
            1,1,1,1,1,1,1,160,3392,3401,
            3403,623,3392,3404,500,583,3392,3493,1182,30,
            1458,980,942,1211,1663,464,1360,1039,1653,2723,
            1613,3392,1,5946,3402,1,5940,1,117,3242,
            1,926,1,1,1,1,1,1,1,1,
            1,1,1,1,1,379,230,3401,3392,623,
            1618,117,500,583,1728,3493,233,3421,1458,980,
            942,1211,1663,464,1360,1039,1653,2723,1613,3392,
            1,5946,3402,3392,5940,1,3402,3392,1,926,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,382,3392,3401,3631,623,3392,3401,
            500,583,1,3493,3365,208,1458,980,942,1211,
            1663,464,1360,1039,1653,2723,1613,3392,1,5946,
            3402,2189,5940,1,3392,2818,1,926,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,2819,3401,3398,1,2129,3380,3398,3392,
            435,3493,3398,5933,1458,980,942,1211,1663,464,
            1360,1039,1653,2723,1613,1,1860,651,1,3251,
            3404,3651,3245,3248,1019,132,851,3397,926,3278,
            851,3397,3272,3275,3392,3397,209,65,3403,3607,
            3609,3404,3608,3556,3557,3555,3610,3558,3554,3607,
            3609,2103,3608,3556,3557,3555,3610,3558,3554,3392,
            3392,969,3398,3392,3561,3566,3565,3563,3564,3562,
            3567,3568,3560,3569,3570,3571,3392,2853,3089,3064,
            3392,3392,3403,3392,623,3404,59,500,583,1019,
            133,1379,381,1431,3311,3397,3341,3305,3308,3347,
            3344,3392,3392,2913,3607,3609,230,3608,3556,3557,
            3555,3610,3558,3554,3607,3609,234,3608,3556,3557,
            3555,3610,3558,3554,2425,3607,3609,66,3608,3561,
            3566,3565,3563,3564,3562,3567,3568,3560,3569,3570,
            3571,2103,2853,3089,3064,1,2939,4272,29,3392,
            4174,1107,801,2491,1091,5905,877,839,3408,1754,
            3103,2226,1938,3405,3406,3407,740,522,1848,3392,
            2939,3403,3396,3392,3404,1107,3398,3392,1091,3392,
            877,839,3408,1754,3103,2226,1938,3405,3406,3407,
            740,522,1848,269,2129,3619,3392,623,212,254,
            500,583,3392,2939,3403,325,887,3404,1107,3397,
            29,1091,5905,877,839,3408,1754,3103,2226,1938,
            3405,3406,3407,740,522,1848,3392,58,851,1,
            1860,3619,3392,3251,423,368,3245,3248,3392,2939,
            3403,30,1457,3404,1107,5905,3395,1091,5905,877,
            839,3408,1754,3103,2226,1938,3405,3406,3407,740,
            522,1848,1,2939,4272,3392,1549,4174,1107,3392,
            3117,1091,5905,877,839,3408,1754,3103,2226,1938,
            3405,3406,3407,740,522,1848,383,2939,3403,676,
            1626,3404,1107,801,2491,1091,5905,877,839,3408,
            1754,3103,2226,1938,3405,3406,3407,740,522,1848,
            3392,2939,3403,3392,3392,3404,1107,3392,3392,1091,
            5905,877,839,3408,1754,3103,2226,1938,3405,3406,
            3407,740,522,1848,3392,2365,3403,3392,49,3404,
            1107,250,3392,1091,3033,877,839,3408,1754,3103,
            2226,1938,3405,3406,3407,740,522,1848,3392,2873,
            3403,3392,3392,3404,1107,1,1,1091,1,877,
            839,3408,1754,3103,2226,1938,3405,3406,3407,740,
            522,1848,3392,2899,3403,813,51,3404,1107,249,
            3392,1091,3033,877,839,3408,1754,3103,2226,1938,
            3405,3406,3407,740,522,1848,3392,2923,3403,3007,
            2543,3404,1107,3607,3609,1091,3608,877,839,3408,
            1754,3103,2226,1938,3405,3406,3407,740,522,1848,
            3392,2939,3403,3392,50,3404,1107,251,3392,1091,
            3033,877,839,3408,1754,3103,2226,1938,3405,3406,
            3407,740,522,1848,3392,2965,3403,3007,2543,3404,
            1107,1,1,1091,1,877,839,3408,1754,3103,
            2226,1938,3405,3406,3407,740,522,1848,1,2939,
            3403,3392,70,3404,1107,252,3392,1091,3392,877,
            839,3408,1754,3103,2226,1938,3405,3406,3407,740,
            522,1848,3392,3024,3403,3007,2543,3404,1107,3607,
            3609,1091,3608,877,839,3408,1754,3103,2226,1938,
            3405,3406,3407,740,522,1848,333,2939,3403,3392,
            1,3404,1107,3398,3392,1091,3392,877,839,3408,
            1754,3103,2226,1938,3405,3406,3407,740,522,1848,
            134,271,1058,3392,3320,1,3392,3314,3317,3251,
            369,254,3245,3248,3332,1800,3397,3326,3329,1,
            2129,3619,263,3392,3607,3609,3400,3608,3556,3557,
            3555,3610,3558,3554,3607,3609,851,3608,3556,3557,
            3555,3610,3558,3554,237,32,3350,224,3368,373,
            3392,3368,3368,623,851,263,500,583,3392,3392,
            3418,3419,3398,68,1,1860,3619,263,3251,1,
            224,3245,3248,3251,3651,254,3245,3248,372,3392,
            3353,3403,623,184,3404,500,583,623,3399,254,
            500,583,224,3356,374,3397,3362,3359,623,57,
            3392,500,583,3398,253,3392,56,838,3398,380,
            64,293,224,623,1651,674,500,583,3392,201,
            72,1,357,623,91,1626,500,583,3607,3609,
            458,3608,5905,3392,286,375,3397,1378,3651,623,
            355,3397,500,583,202,1116,1701,376,1975,1354,
            5905,623,377,1029,500,583,623,91,42,500,
            583,3392,208,3392,415,801,2491,415,5905,1,
            190,5905,801,2491,382,1,3392,3392,3392,1574,
            207,1637,3392,3392,378,3392,3392,3392,3392,3392,
            752,596,3392,3392,1600,3392,3392,3392,3392,1378,
            3392,3392,3392,3392,2239,1676,3392,3392,3392,3392,
            3392,3392,3392,3392,3392,3392,3392,3392,3392,3392,
            3392,3392,3392,3392,3777,3392,3392,3392,3392,3392,
            3404,3392,3392,3392,3392,3392,3403
        };
    };
    public final static char termAction[] = TermAction.termAction;
    @Override
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            677,1,416,382,552,677,417,384,675,47,
            417,417,417,59,670,59,670,670,59,670,
            59,386,384,373,417,59,554,28,419,675,
            554,469,187,384,125,124,190,160,386,252,
            523,248,327,45,156,670,582,579,582,156,
            582,670,384,389,238,249,386,717,28,28,
            28,28,28,28,28,28,28,28,28,630,
            331,132,391,131,554,384,187,187,284,717,
            140,384,524,7,327,424,249,672,473,675,
            507,389,238,384,719,630,630,630,630,630,
            249,249,249,243,539,523,582,582,310,28,
            419,470,711,45,645,554,382,187,397,306,
            747,429,288,440,445,443,453,447,456,455,
            458,457,459,719,504,675,160,252,523,26,
            470,470,582,417,417,13,417,417,470,79,
            28,79,382,120,392,326,675,672,473,507,
            507,238,238,249,241,120,249,249,249,249,
            249,101,386,714,119,118,513,335,28,524,
            249,28,306,583,249,384,747,306,287,284,
            28,28,28,28,28,28,28,28,28,28,
            28,28,28,28,28,28,28,28,28,28,
            28,28,28,28,28,28,28,28,28,28,
            81,28,120,504,138,520,470,470,537,28,
            522,28,28,13,79,585,13,384,7,249,
            309,249,249,473,504,71,473,507,509,588,
            509,238,747,714,386,719,195,195,195,140,
            675,243,249,597,717,28,339,630,523,249,
            28,28,306,288,443,443,440,440,447,447,
            445,445,445,445,445,445,455,453,457,456,
            79,79,458,583,138,26,470,249,417,249,
            249,13,28,13,386,120,473,73,509,504,
            28,582,747,238,597,241,249,719,249,306,
            306,28,28,509,279,470,26,13,28,13,
            13,384,309,504,469,28,465,73,466,504,
            238,249,199,504,136,193,261,582,28,79,
            3,310,470,249,522,73,28,466,466,331,
            140,593,582,28,249,310,470,13,466,28,
            306,13,249,306,13
        };
    };
    public final static char asb[] = Asb.asb;
    @Override
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            98,0,68,35,70,0,3,48,36,2,
            24,0,39,41,10,45,47,42,37,43,
            44,40,38,46,34,26,3,1,18,19,
            20,2,5,15,16,14,6,11,12,21,
            22,17,23,9,13,0,57,49,54,52,
            53,51,50,55,56,58,59,60,35,48,
            36,33,30,28,29,32,24,27,25,31,
            26,3,6,2,1,4,8,7,61,0,
            17,18,19,20,13,2,5,1,15,16,
            14,6,11,12,21,22,9,23,61,0,
            29,24,30,31,32,27,28,33,25,2,
            6,61,26,7,8,4,10,1,35,36,
            3,48,0,1,68,26,7,8,4,35,
            48,36,3,61,0,3,65,35,70,1,
            18,19,20,13,15,16,14,6,11,12,
            21,22,17,23,9,2,5,10,0,50,
            62,30,51,31,52,53,32,27,54,55,
            28,63,33,64,56,57,25,58,59,60,
            2,5,9,24,49,29,7,8,4,3,
            48,26,68,0,61,69,77,65,32,28,
            33,31,30,29,14,11,12,71,72,66,
            67,73,74,75,76,80,81,82,83,84,
            86,87,68,88,89,90,91,92,93,94,
            95,96,97,78,79,10,26,24,27,25,
            48,2,6,7,8,4,35,1,36,3,
            0,10,3,68,48,26,7,8,4,0,
            68,1,18,19,20,13,15,16,14,6,
            11,12,21,22,17,23,9,10,2,5,
            35,70,0,24,27,25,28,15,16,14,
            6,11,12,21,22,17,23,9,1,2,
            5,18,19,20,13,77,3,0,48,17,
            18,19,20,5,1,15,16,14,6,11,
            12,21,22,9,23,13,36,3,2,0,
            61,69,77,65,70,85,15,16,35,14,
            11,12,71,72,66,67,73,74,75,76,
            80,81,82,83,84,86,87,68,88,89,
            90,91,92,93,94,95,96,97,48,78,
            79,36,29,24,30,31,32,27,28,33,
            25,26,3,2,1,7,8,4,6,0,
            61,3,48,36,1,0,24,27,15,16,
            14,6,11,12,21,22,17,23,9,2,
            5,18,19,20,13,25,1,0,3,61,
            36,13,0,2,3,36,1,0,68,88,
            89,90,91,92,94,93,95,96,97,6,
            71,72,11,12,67,66,73,74,75,76,
            78,79,80,81,14,82,83,84,69,77,
            36,65,86,87,61,7,8,4,48,26,
            3,0,29,49,24,50,62,30,51,31,
            52,53,32,27,54,55,28,63,33,64,
            56,57,25,58,59,60,2,5,9,7,
            8,4,34,3,65,0,2,5,3,65,
            48,0,3,61,77,36,26,48,0,36,
            98,99,65,39,41,10,45,47,42,37,
            43,44,40,38,46,34,3,26,18,19,
            20,13,15,16,14,11,12,21,22,17,
            23,6,1,9,62,63,64,57,49,54,
            52,53,51,50,55,56,58,59,60,33,
            30,28,29,32,24,27,25,31,7,8,
            4,5,2,0,61,69,0,3,48,65,
            68,0,77,3,69,0,6,29,49,24,
            50,62,30,51,31,52,53,32,27,54,
            55,28,63,33,64,56,57,25,58,59,
            60,2,5,9,69,4,8,7,0,17,
            18,19,20,13,1,15,16,14,6,11,
            12,21,22,23,29,49,24,50,62,30,
            51,31,52,53,32,27,54,55,28,63,
            33,64,56,57,25,58,59,60,9,2,
            5,7,8,4,10,0,98,29,49,24,
            50,62,30,51,31,52,53,32,27,54,
            55,28,63,33,64,56,57,25,58,59,
            60,5,1,9,7,8,26,3,34,4,
            2,6,0,6,1,35,36,3,29,49,
            50,62,30,51,31,52,53,32,54,55,
            28,63,33,64,56,57,58,59,60,2,
            5,9,7,8,4,69,24,27,25,0
        };
    };
    public final static byte asr[] = Asr.asr;
    @Override
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static char nasb[] = {0,
            176,43,21,181,32,189,43,82,65,95,
            43,43,43,96,87,96,87,87,96,87,
            96,157,144,43,43,96,89,58,74,65,
            153,182,87,160,23,23,43,43,157,43,
            12,187,67,43,8,163,8,163,8,8,
            8,163,167,43,163,187,157,186,58,58,
            58,58,58,58,58,58,58,58,58,171,
            43,187,43,43,98,143,163,87,70,186,
            60,165,104,19,79,43,187,87,153,43,
            153,43,87,85,117,171,171,171,171,171,
            187,187,187,151,1,12,25,25,52,173,
            74,182,43,74,126,35,181,163,57,72,
            63,43,71,43,43,43,43,43,43,43,
            43,43,43,131,153,43,43,43,113,180,
            182,182,8,43,43,27,43,43,182,43,
            76,43,181,187,43,187,43,163,139,153,
            8,87,153,187,149,43,187,187,187,187,
            187,16,157,184,23,23,43,43,58,104,
            187,58,72,43,187,143,63,72,71,48,
            58,58,58,58,58,58,58,58,58,58,
            58,58,58,58,58,58,58,58,58,58,
            58,58,58,58,58,58,58,58,58,58,
            44,58,187,13,153,43,182,182,193,173,
            43,173,173,27,43,43,27,83,19,187,
            58,187,187,153,13,181,135,8,102,43,
            43,153,63,148,157,117,16,16,16,15,
            16,122,187,155,186,58,43,171,113,187,
            58,58,72,71,43,43,43,43,43,43,
            43,43,43,43,43,43,43,43,43,43,
            43,43,43,43,56,195,182,187,43,187,
            187,27,58,27,157,187,139,143,102,13,
            58,8,63,48,155,120,187,117,187,72,
            72,58,58,102,110,182,195,27,173,27,
            27,84,58,13,182,58,43,160,87,13,
            48,187,16,13,55,43,60,8,58,43,
            10,195,182,187,43,143,58,87,163,50,
            60,72,8,58,187,195,182,27,163,58,
            72,27,187,72,27
        };
    };
    public final static char nasb[] = Nasb.nasb;
    @Override
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            95,102,93,92,84,91,90,1,0,136,
            0,2,53,0,6,51,50,0,117,0,
            142,0,59,0,103,0,1,38,2,39,
            0,34,2,100,95,102,94,93,92,84,
            91,90,0,2,31,122,0,32,0,132,
            0,2,123,0,112,51,2,6,0,6,
            51,0,85,0,115,0,141,18,0,2,
            6,49,0,101,0,6,144,0,18,119,
            0,48,2,36,34,46,27,0,84,78,
            79,80,81,87,72,54,0,29,2,138,
            0,88,0,29,2,1,38,105,0,1,
            145,0,38,1,77,53,2,29,0,34,
            46,68,67,27,0,2,29,60,30,0,
            128,2,29,0,2,58,97,0,107,2,
            58,0,27,46,34,2,0,18,34,46,
            67,68,2,0,2,29,27,63,0,46,
            34,2,10,0,46,48,27,34,36,0,
            58,30,2,31,0,137,2,29,0,31,
            2,26,0,67,68,2,18,0,2,29,
            113,0,29,60,2,71,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    @Override
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            2,87,89,99,88,9,97,98,95,3,
            10,11,86,8,6,7,70,83,84,85,
            12,13,96,50,78,94,66,71,46,57,
            62,65,74,100,1,92,79,47,48,51,
            52,53,59,60,61,67,73,42,49,54,
            58,63,64,68,69,76,77,80,81,82,
            29,56,72,75,93,16,17,31,30,4,
            14,15,18,19,20,21,91,43,44,22,
            23,24,25,26,5,27,28,32,33,34,
            35,36,37,38,39,40,41,101,55,90
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    @Override
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            106,0,0,0,0,108,112,113,114,190,
            0,0,0,115,116,117,118,103,119,120,
            121,122,123,0,0,105,191,124,133,129,
            107,141,0,164,0,167,0,125,128,0,
            0,0,0,0,161,163,0,165,102,111,
            0,151,104,140,0,0,0,155,166,132,
            0,127,162,110,175,178,179,180,0,0,
            0,143,150,0,168,174,131,144,145,146,
            147,148,149,152,173,177,198,0,134,135,
            136,137,138,139,142,0,154,158,160,169,
            195,197,109,126,130,0,153,157,0,159,
            172,182,187,0,189,0,192,0,194,0,
            0,0,0,0,0,156,0,170,171,176,
            181,0,183,184,0,185,186,188,0,0,
            193,0,0,196,199,0,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    @Override
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            202,258,334,220,314,125,151,157,286,99,
            363,385,342,1,108,141,167,187,67,266,
            324,35,35,59,63,75,81,113,163,237,
            302,75,421,428,432,359,381,394,408,394,
            348,15,27,56,8,8,117,120,172,120,
            197,120,247,252,255,311,436,50,87,93,
            133,241,87,405,415,415,8,133,276,210,
            372,210,276,20,20,41,233,41,41,41,
            41,41,309,403,20,20,45,146,175,146,
            175,175
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    @Override
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            79,79,321,79,321,131,6,6,79,105,
            369,391,329,6,39,131,6,39,72,271,
            329,39,39,39,39,79,85,39,6,235,
            235,79,39,39,6,321,321,321,412,398,
            352,18,18,39,6,6,39,123,6,182,
            39,200,250,250,250,235,39,53,90,96,
            148,244,306,53,418,425,11,136,271,227,
            375,213,279,25,33,43,235,292,294,296,
            298,300,235,235,22,30,47,148,184,136,
            177,192
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    @Override
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            80,78,43,80,43,63,59,59,78,50,
            43,42,43,146,69,63,59,36,11,78,
            43,87,7,7,116,115,70,69,59,97,
            60,30,7,6,6,43,42,42,24,42,
            43,108,83,4,136,135,67,86,59,100,
            34,52,79,79,79,44,4,40,70,112,
            63,97,60,40,8,6,146,63,78,80,
            43,80,78,108,83,102,97,94,93,92,
            91,90,60,41,108,83,144,63,36,63,
            48,36
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    @Override
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            65,65,36,65,36,24,77,77,65,65,
            36,99,26,77,36,24,77,36,36,10,
            26,36,36,36,36,65,10,36,77,26,
            26,65,36,36,77,36,36,36,61,36,
            26,7,7,36,77,77,36,1,77,2,
            36,2,2,2,2,26,36,61,2,68,
            6,2,2,61,36,36,69,6,10,10,
            37,2,2,2,2,9,26,2,62,63,
            63,57,26,26,2,2,69,6,1,6,
            1,1
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    @Override
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static char scopeStateSet[] = {
            141,141,38,141,38,208,54,54,141,17,
            38,38,38,3,58,208,54,146,164,141,
            38,141,65,65,14,138,224,58,54,8,
            221,30,65,65,65,38,38,38,101,38,
            38,5,159,65,1,3,58,60,54,217,
            146,152,141,141,141,38,65,38,224,135,
            208,8,221,38,72,65,3,208,141,141,
            38,141,141,5,159,142,8,142,142,142,
            142,142,221,38,5,159,12,208,146,208,
            148,146
        };
    };
    public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
    @Override
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            162,69,162,35,0,102,0,162,35,0,
            30,127,102,0,198,127,0,191,0,127,
            0,158,191,0,158,0,152,127,0,151,
            191,0,151,0,164,1,9,0,103,0,
            195,0,198,0,162,0,30,127,0,244,
            39,0,29,128,0,130,1,0,164,1,
            23,0,240,1,217,0,239,1,1,7,
            0,103,103,0,205,102,10,0,104,0,
            200,102,129,0,189,0,102,129,0,169,
            189,0,233,102,0,31,150,0,188,231,
            102,10,151,0,104,0,0,175,102,1,
            167,0,175,102,1,0,186,1,0,163,
            102,0,178,0,102,137,6,137,163,0,
            173,0,137,163,0,9,0,0,173,0,
            102,137,6,137,0,137,0,9,0,0,
            128,28,211,102,35,0,128,211,102,28,
            35,0,128,28,35,0,128,211,102,35,
            0,128,35,0,134,0,2,0,170,103,
            0,167,0,2,103,0,175,102,1,134,
            0,2,0,168,103,0,152,1,0,161,
            0,188,209,102,10,101,227,62,0,227,
            62,0,106,3,0,0,0,104,0,188,
            209,102,10,227,62,0,3,0,0,0,
            104,0,158,0,105,0,226,102,158,0,
            102,158,0,156,105,0,196,62,0,106,
            0,196,64,0,196,63,0,206,102,10,
            225,101,224,184,0,225,101,224,184,0,
            3,0,0,104,0,224,184,0,106,0,
            3,0,0,104,0,206,102,10,224,184,
            0,147,0,146,0,145,0,144,0,143,
            0,189,102,129,0,134,105,0,129,0,
            131,46,0,171,126,171,160,1,43,0,
            103,128,0,171,160,1,43,0,105,0,
            103,128,0,171,126,171,126,171,1,43,
            0,171,126,171,1,43,0,171,1,43,
            0,105,0,105,0,103,128,0,131,1,
            37,0,131,1,37,139,42,0,103,105,
            0,139,42,0,79,2,107,103,105,0,
            131,1,47,0,139,118,131,1,45,0,
            55,128,0,131,1,45,0,103,128,55,
            128,0,138,0,162,39,0,131,87,123,
            0,29,124,0,164,1,0,103,113,0,
            164,1,17,0,103,111,0,223,1,106,
            0,131,35,106,0,131,1,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    @Override
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            414,0,1784,0,2189,2024,0,2882,1999,2017,
            0,942,0,838,435,0,813,775,676,1302,
            638,1277,424,1250,1018,712,636,714,0,3024,
            1960,2965,2939,2923,2899,2873,2365,2583,2563,2556,
            2536,2529,2482,2432,2425,1925,2405,2378,1843,464,
            1797,1751,0,1282,1275,673,457,1946,2618,2129,
            2819,2092,2271,0,3132,3103,2226,1938,1848,1091,
            1019,702,424,433,1800,2239,2103,1116,2824,2808,
            2792,2776,2760,1764,752,596,2851,2634,2491,801,
            3033,3007,2543,664,1754,1107,877,839,740,522,
            1726,1701,813,1676,1651,775,1626,1029,1600,1574,
            1549,1524,1498,1472,1446,887,1420,1394,1368,1342,
            1316,1290,1264,1238,1212,1186,1157,993,967,942,
            916,389,714,851,676,638,0,774,754,0,
            1072,535,389,485,0,2834,485,2364,1946,2336,
            2307,2189,2264,2024,2129,2092,2279,1860,1888,1996,
            2053,1054,0,3190,3186,3164,2189,3146,2264,2364,
            1946,2024,2618,1888,1996,3118,3182,3168,535,389,
            2336,2257,3114,2307,3140,3068,2053,2922,2834,2726,
            2428,2173,2279,621,1072,2702,2696,2853,2688,3089,
            3064,2662,2654,2636,499,1054,485,2477,3060,2143,
            3032,2972,2883,2879,1865,0,1888,1054,485,0,
            2991,1960,1138,1925,1843,1797,1751,2848,2590,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    @Override
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,221,4,129,102,237,242,102,200,190,
            7,8,4,191,184,192,64,63,193,62,
            194,102,1,2,134,202,195,9,1,200,
            229,189,152,127,146,134,183,148,102,136,
            10,1,1,1,224,127,196,127,196,227,
            196,127,163,137,127,152,102,1,9,23,
            17,22,21,12,11,6,14,16,15,1,
            106,243,13,201,102,48,127,152,35,1,
            68,163,102,1,241,2,13,101,10,101,
            10,137,6,163,102,1,1,1,1,1,
            130,164,131,158,102,10,85,70,1,35,
            61,118,1,48,238,102,129,127,28,128,
            102,107,6,109,115,114,117,116,120,119,
            122,121,123,102,10,151,148,136,205,46,
            38,40,44,43,37,42,47,45,138,41,
            39,101,129,239,217,1,225,127,102,10,
            102,6,137,175,129,176,164,164,164,164,
            164,118,102,1,168,167,204,101,9,102,
            223,102,131,6,2,102,102,128,211,185,
            97,96,95,93,94,92,91,90,89,88,
            68,72,71,6,66,67,12,11,81,80,
            79,78,76,75,74,73,82,14,84,83,
            87,86,228,102,10,3,131,101,1,1,
            139,1,1,61,244,162,61,102,48,118,
            1,13,2,10,206,158,207,102,209,101,
            210,137,102,1,102,48,118,118,118,118,
            118,163,186,102,1,48,107,1,205,2,
            211,28,128,6,114,114,109,109,116,116,
            115,115,115,115,115,115,119,117,121,120,
            222,131,122,48,102,160,171,131,37,131,
            131,61,69,61,102,240,102,102,209,188,
            68,48,102,185,102,163,175,102,164,128,
            128,61,61,231,102,171,126,118,1,118,
            118,163,48,206,226,61,152,127,198,188,
            185,175,118,188,48,233,245,70,35,101,
            234,126,171,131,139,48,61,198,127,153,
            68,162,70,35,171,126,118,99,127,69,
            162,118,171,162,118
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    @Override
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            "{",
            ".",
            "->",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            ">?",
            "<?",
            "$empty",
            "auto",
            "break",
            "case",
            "char",
            "const",
            "continue",
            "default",
            "do",
            "double",
            "else",
            "enum",
            "extern",
            "float",
            "for",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "register",
            "restrict",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "struct",
            "switch",
            "typedef",
            "union",
            "unsigned",
            "void",
            "volatile",
            "while",
            "_Bool",
            "_Complex",
            "_Imaginary",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "typeof",
            "__alignof__",
            "__attribute__",
            "__declspec",
            "asm",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "]",
            ")",
            "}",
            ";",
            "identifier_token",
            "expression",
            "postfix_expression",
            "member_name",
            "type_id",
            "initializer_list",
            "unary_expression",
            "cast_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "expression_in_statement",
            "expression_list_actual",
            "constant_expression",
            "statement",
            "compound_statement",
            "block_item_list",
            "block_item",
            "declaration",
            "declaration_specifiers",
            "init_declarator_list",
            "simple_declaration_specifiers",
            "struct_or_union_declaration_sp" +
            "ecifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "typdef_name_declaration_specif" +
            "iers",
            "no_type_declaration_specifier",
            "type_qualifier",
            "no_type_declaration_specifiers",
            "simple_type_specifier",
            "struct_or_union_specifier",
            "elaborated_specifier",
            "enum_specifier",
            "type_name_specifier",
            "init_declarator",
            "complete_declarator",
            "initializer",
            "declarator",
            "struct_or_union",
            "struct_declaration_list",
            "struct_declaration",
            "specifier_qualifier_list",
            "struct_declarator_list",
            "complete_struct_declarator",
            "struct_declarator",
            "enumerator_list",
            "enumerator",
            "direct_declarator",
            "pointer_seq",
            "array_direct_declarator",
            "basic_direct_declarator",
            "knr_direct_declarator",
            "array_modifier",
            "function_direct_declarator",
            "parameter_type_list",
            "function_declarator",
            "identifier_list",
            "knr_function_declarator",
            "array_modifier_type_qualifiers",
            "type_qualifier_list",
            "parameter_list",
            "parameter_declaration",
            "complete_parameter_declarator",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "initializer_seq",
            "designated_initializer",
            "designation",
            "designator_list",
            "designator",
            "external_declaration_list",
            "external_declaration",
            "declaration_list",
            "function_body",
            "attribute_or_decl_specifier",
            "attribute_or_decl_specifier_se" +
            "q",
            "word",
            "extended_decl_modifier_seq",
            "extended_decl_modifier",
            "extended_asm_param",
            "case_range_expression",
            "typeof_declaration_specifiers",
            "typeof_type_specifier",
            "field_name_designator"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 34,
           SCOPE_UBOUND      = 91,
           SCOPE_SIZE        = 92,
           MAX_NAME_LENGTH   = 38;

    public final int getErrorSymbol() { return ERROR_SYMBOL; }
    public final int getScopeUbound() { return SCOPE_UBOUND; }
    public final int getScopeSize() { return SCOPE_SIZE; }
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 375,
           NT_OFFSET         = 100,
           LA_STATE_OFFSET   = 3780,
           MAX_LA            = 2147483647,
           NUM_RULES         = 388,
           NUM_NONTERMINALS  = 147,
           NUM_SYMBOLS       = 247,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 2590,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 98,
           EOLT_SYMBOL       = 98,
           ACCEPT_ACTION     = 3241,
           ERROR_ACTION      = 3392;

    public final static boolean BACKTRACK = true;

    public final int getNumStates() { return NUM_STATES; }
    public final int getNtOffset() { return NT_OFFSET; }
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    public final int getMaxLa() { return MAX_LA; }
    public final int getNumRules() { return NUM_RULES; }
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    public final int getNumSymbols() { return NUM_SYMBOLS; }
    public final int getSegmentSize() { return SEGMENT_SIZE; }
    public final int getStartState() { return START_STATE; }
    public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
    public final int getAcceptAction() { return ACCEPT_ACTION; }
    public final int getErrorAction() { return ERROR_ACTION; }
    public final boolean isValidForParser() { return isValidForParser; }
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
